var express = require('express');
var router = express.Router();
// 连接数据库，引入集合
const pro = require("../sql/pro")
// 引入数据操作工具库
const sql = require("../sql/sql")

const xlsx = require("node-xlsx")

// 生成唯一商品id模块
const uuid = require("uuid")

let page = 0;
let num = 10;

// 初始表格路由（获取数据并渲染页面模板路由）(初始获取第一页数据)
router.get('/', function(req, res, next) {
  sql.getPage(pro, page, num).then((data)=>{
    // console.log(data)
    sql.getCount(pro).then((len)=>{
      res.render('pro', {
        index: 1,
        data,
        page,
        num,
        maxPage:Math.ceil(len/num),
        power: req.session.power
      });
    })
  })
});

// 添加的页面模板路由
router.get('/add', function(req, res, next) {
  res.render('addForm', {
    index: 1
  });
});

// 添加的功能路由
router.post('/addAction', function(req, res, next) {
  // 先拿到数据
  // console.log(req.body);
  let data = req.body;
  data.price = Number(data.price);
  data.sales = data.sales-0;
  data.stock = data.stock*1;
  data.score = data.score/1;
  data.discount = data.discount/1;
  data.proId = "proId-" + uuid.v1();
  data.time = Date.now()

  // 插入数据
  sql.add(pro, req.body).then(()=>{
    // 成功之后，回到表格页面模板，显示最新数据
    // res.send("添加 ok")
    res.redirect("/pro")
  })
});

// 删除的功能路由
router.get('/del', function(req, res, next) {
  // console.log(req.query)
  let id = req.query.id;

  sql.remove(pro, {proId:id}).then(()=>{
    res.redirect("/pro")
  })
});


// 修改的页面模板路由
router.get('/update', function(req, res, next) {
  let id = req.query.id;

  sql.get(pro, {proId:id}).then(data=>{
    res.render('updateForm', {
      index: 1,
      data: data[0]
    });
  })

});

// 修改的功能路由
router.post('/updateAction', function(req, res, next) {
  let data = req.body;

  data.price = Number(data.price);
  data.sales = data.sales-0;
  data.stock = data.stock*1;
  data.score = data.score/1;
  data.discount = data.discount/1;

  sql.set(pro, {proId:data.proId}, {$set:data}).then(()=>{
    res.redirect("/pro")
  })

});

// 后端项目，在服务器中，读文件（读资源）
//   走的是网络
//   还是硬盘√
//     硬盘的绝对地址：/Users/liyang/Desktop/sh2014/code/day05/goodsAdmin/data

// 批量导入数据的功能路由
router.get('/uploadXlsx', function(req, res, next) {
  // 读取到文件 - 根据绝对地址读取
  // 解析成数据
  // xlsx.parse(要解析的xlsx的文件的绝对地址)

  // 获取当前文件的绝对路径
  // console.log(__dirname)

  const xlsxData = xlsx.parse(__dirname + "/../data/pro.xlsx")
  // res.send(xlsxData[0].data)

  // 处理数据:一定要根据自己的数据的格式和顺序指定解析
  let d = xlsxData[0].data
  let arr = [];
  for(var i=1;i<d.length;i++){
    arr.push({
      proId: "proId-" + uuid.v1(),
      proImg: d[i][5],
      proName: d[i][1],
      brand: d[i][3],
      logo: d[i][4],
      type: d[i][2],
      price: d[i][6]-0,
      sales: d[i][9]-0,
      stock: d[i][8]-0,
      score: d[i][11]-0,
      discount: d[i][10]-0,
      describe: d[i][7],
      time: Date.now()
    })
  }

  // 插入到数据库
  sql.add(pro, arr).then(()=>{
    // 成功之后，路由重定向
    res.redirect("/pro")
  })
  
});


// 排序的功能路由
router.get('/sort', function(req, res, next) {
  let s = req.query;
  // res.send(s)
  sql.getSort(pro, s).then((data)=>{
    res.render('pro', {
      index: 1,
      data,
      page:0,
      num:data.length,
      maxPage:1
    });
  })
});

// 搜索的功能路由
router.get('/search', function(req, res, next) {
  let s = req.query.sKey;
  sql.get(pro, {proName: new RegExp(s)}).then((data)=>{
    res.render('pro', {
      index: 1,
      data,
      page:0,
      num:data.length,
      maxPage:1
    });
  })
});


// 分页的功能路由
router.get('/page', function(req, res, next) {
  page = req.query.p;
  sql.getPage(pro, page, num).then((data)=>{
    sql.getCount(pro).then((len)=>{
      // console.log(page)
      res.render('pro', {
        index: 1,
        data,
        page,
        num,
        maxPage:Math.ceil(len/num)
      });
    })
  })
});



module.exports = router;
